草庐IT

Java HotSpot 枚举开销

全部标签

Java:泛型只接受枚举类型

假设我有一个像这样的基本枚举:publicenumColor{Red,Green,Blue}如何编写一个只接受“枚举类”的泛型类,以便该泛型类的具体实例看起来像MyClass?编辑:实际上想要做的是编写一个通用抽象类,其中包含一个将所有枚举“条目”作为列表返回的函数:publicabstractclassEnumListBean>{publicListgetEnumList(){returnArrays.asList(E.values());}}同时Day.values()可用E.values()不是。我在这里做错了什么? 最佳答案

java - 单例、枚举和匿名内部类

你可能知道,有些人声明单例的枚举为1个实例,因为JVM保证总是有一个没有并发问题需要处理的单例......那么具有多个实例的枚举呢?我们可以说像枚举这样的东西是一种共享公共(public)接口(interface)的有序单例集吗?为什么?publicenumEnumPriceType{WITH_TAXES{@OverridepublicfloatgetPrice(floatinput){returninput*1.20f;}publicStringgetFormattedPrice(floatinput){returninput*1.20f+"€";}},WITHOUT_TAXES{@

Java 枚举 : Implementing methods After Declaration?

考虑下面在枚举中实现方法的简单示例。这种方法的一个问题是,当您有很多枚举实例时,您无法再在视觉上将它们作为一个列表一次全部看到。也就是说,如果我们有很多玩具,我希望在一个长列表中一起看到“DOLL、SOLDIER、TEDDYBEAR、TRAIN、ETC”,然后在该列表之后我可以实现任何需要的方法,例如在枚举本身中是抽象的方法。有什么办法吗?或者您是否必须在声明各个枚举实例时实现这些方法,如下例所示?publicenumToy{DOLL(){@Overridepublicvoidexecute(){System.out.println("I'madoll.");}},SOLDIER(){

java - struts2:IF 中的枚举

在struts2中,以下Java条件如何转换为s:iftest="..."?if(company.getAffiliateId().asInt()!=com.foo.bar.Affiliates.XYZ.asInt()){//dosomething}company.getAffiliateId()返回BigDecimalcom.foo.bar.Affiliates是一个enum这行不通:alert("dosomething"); 最佳答案 使用toString方法比较枚举。如果你想在JSP中使用enums

java - 创建没有实例的枚举有什么用?

我正在通过枚举阅读和实现场景。我发现我们可以创建一个枚举没有任何实例。这样的Enum的实际用途是什么?其次Enum也可以实现一个接口(interface),但显然不能扩展一个类,因为它已经扩展了类Enum。创建没有实例的Enum有哪些实际优势?本 最佳答案 零成员枚举实际上是一个实用类习惯用法,被Java社区的某个部分使用(最著名的是PeterLawrey)。它们是保证类不会被实例化或子类化的最简洁且可以说是最简洁的方法。自然地,您不会在这样的枚举中有任何实例方法;只有静态的。 关于ja

算法思想—枚举、递推、迭代、递归、分治、贪心、动态规划、回溯、模拟、分支定界

算法思想枚举(暴力算法)枚举算法(暴力算法)是一种通过逐一尝试所有可能解来解决问题的算法。它的基本思想是将问题的所有可能答案一一列举出来,并根据一定的判断条件来确定哪些答案是合适的。这种算法通常使用循环来实现,因为需要尝试所有可能的情况。两个例子:以“百钱买百鸡”问题为例,该问题要求找出在100元钱买100只鸡的情况下,公鸡、母鸡和小鸡各多少只。通过枚举算法,我们可以尝试所有可能的组合,并使用判断条件来确定哪些组合是符合要求的。具体来说,我们可以从0开始尝试公鸡的数量,然后逐渐增加母鸡和小鸡的数量,直到找到符合条件的组合。填写运算符的问题也可以使用枚举算法来解决。在这种情况下,我们需要尝试所有

java - 列出未知枚举的值

假设我们有一个Class对象。将其命名为cls。现在cls.isEnum()返回true太开心了!!!可以请我列出这些值吗?(一糖,无奶) 最佳答案 getEnumConstants()类对象的方法返回一个对象数组publicstaticenumE{A,B,C,D;}publicstaticvoidmain(String[]args){Classc=E.class;for(Objectb:c.getEnumConstants()){System.out.println(b);}}打印:ABCD

java - 枚举是否允许在 Java 中有 setter?

我有一个enum,它有一个参数(字段),它是一个String。我可以为这个领域设置二传手吗?publicenumBlah{Monday("a"),Tuesday("b");}privatefinalStringletter;Blah(Stringletter){this.letter=letter;}我可以做以下事情吗?publicStringsetLetter(Stringletter){this.letter=letter;} 最佳答案 您需要删除该字段的final修饰符以使其可设置:publicenumBlah{Monday(

java - 如何使用枚举创建单例类

我正在尝试用Java创建一个单例类。Java5及以上版本的最佳可用解决方案似乎是使用enum。但我不确定如何使用enum将我的类转换为单例类。以下是我的简化类(class):publicclassEmployee{privateintid;privateStringname;publicEmployee(){}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name

java - 枚举的每个成员的内部类?

不确定我想要的是否可行,但我正在尝试创建一个枚举,其中每个成员都有自己的内部类。这些内部类都将具有相同的名称Context但将单独实现。理想情况下,我希望它们可以这样使用:privatehandleType(MyEnumtype){switch(type){caseENUM_VAL1:MyEnum.ENUM_VAL1.Contextcontext=newMyEnum.ENUM_VAL1.Context();handleContext1(context);break;caseENUM_VAL2:MyEnum.ENUM_VAL2.Contextcontext=newMyEnum.ENUM_